Python |
您所在的位置:网站首页 › pandas 读取 csv 指定列 › Python |
目录 为什么不推荐用csv库? 为什么推荐使用pandas读取csv文件? 开始pandas操作csv文件之旅: 0.csv文件预览 1.读取csv文件 2.查找指定列及指定单元格 2.1指定列:通过索引指定列名为hour的列 2.2指定单元格:1001A列23时的AQI值 3.解决遇到的"NAN" 为什么不推荐用csv库?本段说说使用csv库常见的问题: csv.DictWriter():该函数返回的结果遍历一次之后,再次遍历返回的结果是空列表。 csv.reader():返回的结果是结构体,需要for循环才能调用,不能像list那样直接选取特定单元格。 通过列名来查找指定列的操作麻烦。 12345#选择特定的单元格 reader = csv.reader(filenanme) for row in reader: print(row[0])以上问题如何解决: 每次循环遍历完,重新使用csv.DictWriter()函数读取文件。 继续熟练使用。 转身拥抱pandas。为什么推荐使用pandas读取csv文件? 方便,有专门支持读取csv文件的pd.read_csv()函数。 将csv转换成二维列表形式 支持通过列名查找特定列。 相比csv库,事半功倍。开始pandas操作csv文件之旅: 0.csv文件预览 1.读取csv文件 1234import pandas as pd file="E:\data\test.csv" csvPD=pd.read_csv(file) 2.查找指定列及指定单元格 2.1指定列:通过索引指定列名为hour的列通过索引找到列的方式:csvPD['hour'] 在hour列中找到时间为23的行: for i in range(len(csvPD)): if str(csvPD['hour'][i])=="23": print(csvPD['hour'][i]) 2.2指定单元格:1001A列23时的AQI值keyWord="1001A" for i in range(len(csvPD)): if str(csvPD['hour'][i])=="23" and str(csvPD['type'][i])== "AQI": result=csvPD[keyWord][i] print(result) 12345678910111213141516171819202122import pandas as pd #读取cvs文件 file="E:\data\test.csv" csvPD=pd.read_csv(file) #指定列名为hour的列 csvPD['hour'] #在hour列中找到时间为23的行 for i in range(len(csvPD)): if str(csvPD['hour'][i])=="23": print(csvPD['hour'][i]) #在hour列中找到时间为23时1001A站点的AQI值 keyWord="1001A" for i in range(len(csvPD)): if str(csvPD['hour'][i])=="23" and str(csvPD['type'][i])== "AQI": result=csvPD[keyWord][i] print(result) 3.解决遇到的"NAN"csv文件中:1002A站点0时的AQI为空白值,返回的结果为NAN NAN全称:Not A Number 常规解决思路: 使用numpy函数来判断:np.isnan() 和 xxx is np.nan 通过运算操作判断:任何数字乘上0都是0 读取文件时加参数:pd.read_csv(file, keep_default_na=False)操作结果如下图: 1.推荐使用np.isnan(),csvPD["1002A"][0] is np.nan显示为Flase 2.推荐使用nan*0之后仍是nan,而不是0 3.加了参数后,输出的所有数据类型变为str,nan变为空值,len(result)=0。 代码: 使用函数: 12345678import numpy as np result=csvPD["1002A"][0] if np.isnan(result): print("该数据为%f,不能参与计算",result) else: print(result)使用运算方式: 12345678910111213141516result=csvPD["1002A"][0] if result*0 == 0 : print(result) else: print("该数据为%f,不能参与计算",result) #若数据大于0 result=csvPD["1002A"][0] if result > 0 : print(result) else: print("该数据为%f,不能参与计算",result) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |